import AMapLoader from '@amap/amap-jsapi-loader';
import { gcj02towgs84 } from './coordTransform.js';

// 高德地图API Key
const AMap_Key = '80875798c1c07673769ee6b84fcfba61'

export function getOrientation(){
    return new Promise((reslove,reject) => {
        AMapLoader.load({
            key: AMap_Key,             // 申请好的Web端开发者Key，首次调用 load 时必填
            version: "2.0",      // 指定要加载的 JSAPI 的版本，缺省时默认为 1.4.15
            plugins: [
                'AMap.Geolocation',
                'AMap.Geocoder'
            ],       // 需要使用的的插件列表，如比例尺'AMap.Scale'等
        }).then( async (AMap) =>{
            AMap.plugin('AMap.Geolocation', () => {
                // 异步加载插件
                const Geolocation = new AMap.Geolocation({
                    // 是否使用高精度定位，默认：true
                    enableHighAccuracy: true,
                    //自动偏移坐标，偏移后的坐标为高德坐标，默认：true
                    convert: true,
                    // 设置定位超时时间，默认：无穷大
                    timeout: 10000,
                    // 定位按钮的停靠位置的偏移量，默认：Pixel(10, 20)
                    buttonOffset: new AMap.Pixel(10, 20),
                    //  定位成功后调整地图视野范围使定位位置及精度范围视野内可见，默认：false
                    zoomToAccuracy: true,
                    // 默认为false，设置为true的时候可以调整PC端为优先使用浏览器定位，失败后使用IP定位
                    GeoLocationFirst: true,
                })

                Geolocation.getCurrentPosition((status, result) => {
                    if (status === 'complete') {
                        // 高德坐标转wgs84坐标
                        const wgs84Position = gcj02towgs84(result.position.lng, result.position.lat);
                        console.log('高德坐标',result);
                        result.position.lng = Number(wgs84Position[0].toFixed(6));
                        result.position.lat = Number(wgs84Position[1].toFixed(6));
                        console.log('wgs84坐标', wgs84Position);
                        return reslove(result.position)
                    } else {
                        console.log('获取位置失败:', result)
                        return reject(result)
                    }
                })
            })
        }).catch(err =>{
            reject(err)
        })
    })
}
